The process engine in a web application 在 web 应用中的流程引擎

ProcessEngine 是线程安全的, 可以在多线程下共享。在 web 应用中, 意味着可以在容器启动时创建流程引擎, 在容器关闭时关闭流程引擎。
下面代码演示了如何编写一个 ServletContextListener 在普通的Servlet 环境下初始化和销毁流程引擎:

  1. public class ProcessEnginesServletContextListener implements ServletContextListener {
  2. public void contextInitialized(ServletContextEvent servletContextEvent) {
  3. ProcessEngines.init();
  4. }
  5. public void contextDestroyed(ServletContextEvent servletContextEvent) {
  6. ProcessEngines.destroy();
  7. }
  8. }

contextInitialized 方法会执行 ProcessEngines.init()。 这会查找 classpath 下的 activiti.cfg.xml 文
件, 根据配置文件创建一个 ProcessEngine(比如,多个 jar 中都包含配置文件)。 如果 classpath 中包含多个配置文件,确认它们有不同的名字。 当需要使用流程引擎时,可以通过

  1. ProcessEngines.getDefaultProcessEngine()

或者

  1. ProcessEngines.getProcessEngine("myName");

当然,也可以使用其他方式创建流程引擎,可以参考配置章节中的描述。

ContextListener 中的 contextDestroyed 方法会执行ProcessEngines.destroy() ,这会关闭所有初始化的流程引擎。